package com.feshfans.bridge;

import com.feshfans.controller.Controller;
import com.feshfans.controller.RegisteredController;
import com.feshfans.xmpp.client.AbstractClient;

/**
 *
 * 需要 Bridge 桥接 Client 和 Controller 时，需要将 Controller 对象注册到 Bridge
 * Bridge 与 Controller 关系可能是 1:1, 也可能是 1:n, 所以对于 Controller 的维护工作各子类自己实现
 *
 */
public abstract class AbstractBridge {

    /**
     * 窗口打开时，注册,实现类的方法必须是线程安全的
     * @param controller
     */
    public abstract void register(RegisteredController controller);

    /**
     *
     * 窗口关闭时，取消注册。实现类的方法必须是线程安全的
     * @param controller
     */
    public abstract void unregister(RegisteredController controller);
}
